;----------------------------------------------------------------------------  
; 描述符类型值说明  
; 其中:  
;       DA_  : Descriptor Attribute  
;       D    : 数据段  
;       C    : 代码段  
;       S    : 系统段  
;       R    : 只读  
;       RW   : 读写  
;       A    : 已访问  
;       其它 : 可按照字面意思理解  
; G D 0 AVL 0 0 0 0 P DPL(2位) DT TYPE(4位)  
;----------------------------------------------------------------------------  
DA_32       EQU 4000h   ; 32 位段 0100 0000 0000 0000  
  
DA_DPL0     EQU   00h   ; DPL = 0 0000 0000  
DA_DPL1     EQU   20h   ; DPL = 1 0010 0000  
DA_DPL2     EQU   40h   ; DPL = 2 0100 0000  
DA_DPL3     EQU   60h   ; DPL = 3 0110 0000  

;----------------------------------------------------------------------------  
; 存储段描述符类型值说明  
;----------------------------------------------------------------------------  
DA_DR       EQU 90h ; 存在的只读数据段类型值  1001 0000  
DA_DRW      EQU 92h ; 存在的可读写数据段属性值 1001 0010  
DA_DRWA     EQU 93h ; 存在的已访问可读写数据段类型值 1001 0011  
DA_C        EQU 98h ; 存在的只执行代码段属性值 1001 1000  
DA_CR       EQU 9Ah ; 存在的可执行可读代码段属性值 1001 1010  
DA_CCO      EQU 9Ch ; 存在的只执行一致代码段属性值 1001 1100  
DA_CCOR     EQU 9Eh ; 存在的可执行可读一致代码段属性值 1001 1110  


;----------------------------------------------------------------------------  
; 系统段描述符类型值说明  
;----------------------------------------------------------------------------  
DA_LDT      EQU   82h   ; 局部描述符表段类型值 1000 0010  
DA_TaskGate EQU   85h   ; 任务门类型值 1000 0101  
DA_386TSS   EQU   89h   ; 可用 386 任务状态段类型值 1000 1001  
DA_386CGate EQU   8Ch   ; 386 调用门类型值 1000 1100  
DA_386IGate EQU   8Eh   ; 386 中断门类型值 1000 1110  
DA_386TGate EQU   8Fh   ; 386 陷阱门类型值 1000 1111  
;----------------------------------------------------------------------------  
    
      
;----------------------------------------------------------------------------  
; 选择子类型值说明  
; 其中:  
;       SA_  : Selector Attribute  
    
       
SA_RPL0     EQU 0   ; ┓00  
SA_RPL1     EQU 1   ; ┣ RPL01  
SA_RPL2     EQU 2   ; ┃10  
SA_RPL3     EQU 3   ; ┛11  
            
              
SA_TIG      EQU 0   ; ┓TI 0000  
SA_TIL      EQU 4   ; ┛  0100  
;----------------------------------------------------------------------------  
                


; 宏 ------------------------------------------------------------------------  
;  
; 描述符  
; usage: Descriptor Base, Limit, Attr  
;        Base:  dd  
;        Limit: dd (low 20 bits available)低二十位可用  
;        Attr:  dw (lower 4 bits of higher byte are always 0)高字节的低四位始终为0  
%macro Descriptor 3 ;段界限为低地址 1代表Base 2代表Limit 3代表属性   
    dw  %2 & 0FFFFh             ; 段界限 1             (2 字节)  
    dw  %1 & 0FFFFh             ; 段首地址 1           (2 字节)  
    db  (%1 >> 16) & 0FFh       ; 段首地址 2           (1 字节)  
    dw  ((%2 >> 8) & 0F00h) | (%3 & 0F0FFh)   ; 属性 1 + 段界限 2 + 属性 2       (2 字节)  
    db  (%1 >> 24) & 0FFh       ; 段首地址 3            (1 字节)  
%endmacro ; 共 8 字节  

